Gann ToolsThis is basically an updated version of my scripts with additional features, all in one instead of 3 separated scripts,
The script includes the following but not limited to:
1- Price Angles (Angles of Square of 9) with the ability to add extra primary angles or whole cycles, and the customization of every line color and style and more
2- Gann Star with the customization of every line color and style and more
3- Gann Grid with the customization of every line color and style and more
4- Gann Fan/s, that can be drawn from the all 4 directions/points, with the customization of every line color and style and more
5- Gann Square (Sq of 52/90/144) with the ability to extend boxes in all directions, and of course with the customization of every line color and style
The only reason that made me create 3 separated scripts, is that there was a limit of 55 line per script, and I had to draw a lot of lines, specially in the Grid, now that limit is 500 (crazy right?).
You can now select the starting point with a click instead of having to type the price by yourself, input whatever color you want for every single line that will be drawn on your screen.
I hope everyone enjoys using my indicator/s to plot their creativity on the chart.
Cerca negli script per "the script"
3rd WaveHello All,
In Elliott Wave Theory, 3rd wave is not the shortest one in the waves 1/3/5 and it's usually longest one. so if we can catch it then we may get good opportunities to trade. This script finds 3rd wave experimentally. it can be also the 3rd waves in the waves 1, 3, 5, A and C. the 3rd wave should have greater volume than other waves, the script can check its volume and compare with the volumes of the waves 1 and 2 optionally.
Pine Team released Pine version 5! This script was developed in v5 and it uses Library feature of Pine v5 for the zigzag functions. This script is also an example for the Pine developers who learn Pine v5 and Libraries.
Options:
Zigzag Period: is the length that is used to calculate highest/lowest and the zigzag waves
Min/Max Retracements: is the retracement rates to check the wave 2 according to wave 1. for example; if min/max values are 0.500-0.618 then wave 2 must be minimum 0.500 of wave 1 and maximum 0.618 of wave 1.
Check Volume Support: is an option to compare the volumes of1. 2. and . waves. if you enable this option then the script checks their volume and 3rd wave volume must be greater then 1 and 2
there are 4 options for the targets. you can enable/disable and change their levels. targets are calculated using length of wave 1.
Options to show breakout zone, zigzag, wave 1 and 2.
and some options for the colors.
The Library that is used in this script:
P.S. This is an experimental work and can be improved. So do not hesitate to drop your comments under the script ;)
Enjoy!
[SCL] Significant Figures Example FunctionThis script consist of a single example function that takes a floating-point number - one that can, but doesn't have to, include a decimal point - and converts it to a floating-point number with only a certain number of significant digits left.
I'm not aware of another script that does this. There might well be a simpler way, in which case please do let me know.
For example, say you want to display a variable from your script to the user and it comes out to something like 45.366666666666666666666667 or whatever. That looks awful when you, for example, print it in a label.
Now, you could round it up to the nearest integer easily using a built-in function, or even to a certain number of decimal places using a reasonably simple custom function.
But that's a bit arbitrary. Suppose you don't know what asset the script will be used on, and so you can't predict what the price is, and what the value will turn out to be.
It could be 0.00045366666666666666666666667 instead. Now if you round it up to 3 decimal places it comes out as 0.000, which is useless.
My function will round that number to 0.0004536 instead, if told to do it to 4 significant digits.
You're free to use this function in your own scripts, including closed-source scripts, without asking permission. Credit to @SimpleCryptoLife would be appreciated.
TradeChartist Intensity Pro™TradeChartist Intensity Pro is a visual indicator that comes with 5 Visual Themes and Auto-fibs feature that helps traders with Entry/Exit and levels confirmation based on where the price is, in relation to the Orange Price Equilibrium line and the 5 zones of Bull/Bear limits that fade into the top or bottom outer space.
™TradeChartist Intensity is an original Mean Reversion Model that requires no user input and Intensity Pro incorporates User adjustable Auto-Fibs and manual Fibonacci retracement feature and plots customisable Fib levels along with prices.
======================================================================================
Intensity Pro Features
Orange Mean Equilibrium Line
Bull and Bear Intensity Bands
5 Visual Themes
Trend based Bar Colours
Auto Fibonacci Levels
Custom Auto-Fib Levels
Fibonacci Levels based on Days or Bars Lookback
Current Fib Level label
High and Low Plots
Take Profit Bars
======================================================================================
Example Charts:
1. 4hr BTC-USDT
2. SPX Daily
3. EUR-USD 1hr
======================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
======================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
======================================================================================
TradeChartist Transformer ™TradeChartist Transformer is an extremely useful indicator that transforms any indicator plot, Oscillatory or Non-Oscillatory into Support/Resistance levels, thereby generating trade entries on Price chart.
How does ™TradeChartist Transformer work?
1. Connect any external indicator plot to Transformer by choosing it from the Transformer's Plug Indicator Here dropdown from the settings.
2. Choose whether the connected plot is Oscillatory or Non-Oscillatory from Indicator Type .
3. If connected indicator is an oscillator, enter the values for Transformer to generate Trade Entries. For example, if the connected Indicator is RSI, user can define RSI level 60 for BUY entries and RSI level 40 for SELL entries. For most oscillators, the value is 0 which is the default value.
4. There are two types of Trade Entries, one based on Fail/breach of Nearby Support/Resistance and the other based on Fail/breach of Ultimate Support/Resistance plotted by Transformer. For Higher Time-Frames like Daily, Fail/breach of Nearby S/R entry type will ensure early trade entries. This could vary from indicator to indicator and a thorough testing/observation on timeframe traded using paper trades is highly recommended before trading with real money.
5. Once Steps 1-4 are complete, BUY and SELL plots based on above will be plotted by Transformer on Price chart.
6. BUY and SELL plots are also decided by an ATR (Average True Range) condition + Indicator plot acting as filter itself along with fail/breach of Support/Resistance, as this helps minimise unproductive trade signals.
7. Enabling Dynamic Support/Resistance plots moving Support/Resistance levels for each bar. For most assets/timeframes, this doesn't alter the Trade entries.
8. Bar Colors and Profit Taking Bars can be enables from settings as these help identify the trend visually and also help recommend bars where profit taking is recommended.
9. Alerts can be created for Long and Short entries by using Once Per Bar Close as Alert Frequency. Entries are generated on Real time bars as close price fails Support or breaches Resistance. It is recommended to wait for bar close before taking a position based on Transformer Trade Entries.
10. Trade Entries or Transformer plots don't repaint. This can be verified using Bar Replay by confirming real time plots with historical plots. Also, when creating alerts, there will be no Alert Warning for repainting as the code doesn't use Security function or other functions that cause potential repainting.
===================================================================================================================
™TradeChartist Transformer can also be connected to ™TradeChartist Plug and Trade to generate Targets, Stop Loss Plot etc. and other alerts can also be created. Example chart shown below - Transformer connected to RSI to generate BUYs when RSI > 60 and SELLs when RSI < 40, connected to Plug and Trade.
===================================================================================================================
Example Charts:
1. CCI - (CCI>100 - Bullish and CCI<-100 - Bearish) connected to Transformer - BTC 1hr chart
2. Chaikin Money Flow with default values connected to Transformer - BTC 1hr chart
3. EMA connected to Transformer- BTC Daily chart
4. Awesome Oscillator connected to Transformer - GBPUSD Daily Chart
5. Ichimoku Cloud Conversion Line connected to Transformer - USOIL 1hr chart
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
TradeChartist TrendStalker - Market Bias Indicator™TradeChartist TrendStalker helps visualise the Market Bias through 3 different Plot types and also displays Trend Direction Identifier (Green, Red and Orange square blocks) that can be connected to ™TradeChartist Plug and Trade to generate Trade entries, Targets, StopLoss and create alerts based on performance on the chosen timeframe. The three plot types are as below.
1. Market Bias Strength Oscillator
Plots true strength of Market Bias - helps determine if Market is Bullish/Bearish overall for the asset on chart TF.
2. Market Bias Detector - Range Based
Displays TrendStalker plots stalking the Market Bias based on Range the Market is expecting to gain/lose from the asset on the Chart Timeframe. Change in Market Bias can be easily seen through the Convergence/Divergence of the TrendStalker plots.
3. Market Bias Detector - Price
Displays TrendStalker plots stalking the Market Bias based on Price for the asset on the Chart Timeframe. Change in Market Bias can be easily seen through the Convergence/Divergence of the TrendStalker plots.
Note: Trend Direction Identifier for Trade entries will be the same for Market Bias Detector plots, but differs from Market Bias Strength Oscillator.
Note: Trend Direction Identifier plots orange squares when its detecting a potential change in trend and its recommended to close some/most of the position or move Stop Loss to protect profit/reduce risk. Once the orange squares turn back into green/red squares, it signals safe re-entry.
Green squares - Bullish Trend
Red Squares - Bearish Trend
Orange Squares - Potential change in Market Bias
===================================================================================================================
TrendStalker Cool Extras
Option to paint Background Color
Option to enable Take Profit bar recommendation (Works only with Market Bias Strength Oscillator)
Option to paint Price Bars using Market Bias Strength
Alerts can be created for Long/Short Entry/Re-entry and Long/Short SOS signals (Orange squares). For all other alerts, ™TradeChartist Plug and Trade can be used.
BTC 1hr Chart with TrendStalker Extras
===================================================================================================================
BTC 1hr Chart with TrendStalker connected to ™TradeChartist Plug and Trade
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
TradeChartist MTF RSI Spotter™TradeChartist MTF RSI Spotter is an elegant Multi Timeframe RSI tool that helps spot price trends using visually engaging and appealing RSI plots and backgrounds compared to the basic RSI plot. Also the Bull and the Bear background fills + HTF RSI based background fills are highly useful for traders who like to visually understand areas of entry and exit based on RSI .
What does ™TradeChartist MTF RSI Spotter do?
Plots RSI with visually spottable colors for Bull and Bear zones (Green and Red) with optional background fill.
Plots RMA based on User specified length.
Plots user preferred HTF RSI on same chart as chart TF - HTF resolution from indicator settings drop-down must be used.
Fills Bull and Bear zone colors based on HTF based RSI movement.
Spots Regular RSI Bullish and Bearish Divergences.
Plots RSI color candles on main chart based on Upper and Lower RSI band.
Plots RSI based on RSI smoothing (1 for Regular RSI without smoothing) and Heikin Ashi RSI if opted from indicator settings.
This indicator works like a dream when used with other indicators for confirmation of Trends.
Note 1: Divergences don't work to trader's expectations all the time. It is a great indicator but has to be used with caution and entries must be confirmed using another indicator like Volume , Trend, fundamentals, market sentiment etc. They can't be used on their own to decide entry and exit.
Note 2: Bull and Bear RMA with chart TF RSI should be used for confirmation and not as a standalone indicator for entry and exit.
Example charts
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
Backtesting & Trading Engine [PineCoders]The PineCoders Backtesting and Trading Engine is a sophisticated framework with hybrid code that can run as a study to generate alerts for automated or discretionary trading while simultaneously providing backtest results. It can also easily be converted to a TradingView strategy in order to run TV backtesting. The Engine comes with many built-in strats for entries, filters, stops and exits, but you can also add you own.
If, like any self-respecting strategy modeler should, you spend a reasonable amount of time constantly researching new strategies and tinkering, our hope is that the Engine will become your inseparable go-to tool to test the validity of your creations, as once your tests are conclusive, you will be able to run this code as a study to generate the alerts required to put it in real-world use, whether for discretionary trading or to interface with an execution bot/app. You may also find the backtesting results the Engine produces in study mode enough for your needs and spend most of your time there, only occasionally converting to strategy mode in order to backtest using TV backtesting.
As you will quickly grasp when you bring up this script’s Settings, this is a complex tool. While you will be able to see results very quickly by just putting it on a chart and using its built-in strategies, in order to reap the full benefits of the PineCoders Engine, you will need to invest the time required to understand the subtleties involved in putting all its potential into play.
Disclaimer: use the Engine at your own risk.
Before we delve in more detail, here’s a bird’s eye view of the Engine’s features:
More than 40 built-in strategies,
Customizable components,
Coupling with your own external indicator,
Simple conversion from Study to Strategy modes,
Post-Exit analysis to search for alternate trade outcomes,
Use of the Data Window to show detailed bar by bar trade information and global statistics, including some not provided by TV backtesting,
Plotting of reminders and generation of alerts on in-trade events.
By combining your own strats to the built-in strats supplied with the Engine, and then tuning the numerous options and parameters in the Inputs dialog box, you will be able to play what-if scenarios from an infinite number of permutations.
USE CASES
You have written an indicator that provides an entry strat but it’s missing other components like a filter and a stop strategy. You add a plot in your indicator that respects the Engine’s External Signal Protocol, connect it to the Engine by simply selecting your indicator’s plot name in the Engine’s Settings/Inputs and then run tests on different combinations of entry stops, in-trade stops and profit taking strats to find out which one produces the best results with your entry strat.
You are building a complex strategy that you will want to run as an indicator generating alerts to be sent to a third-party execution bot. You insert your code in the Engine’s modules and leverage its trade management code to quickly move your strategy into production.
You have many different filters and want to explore results using them separately or in combination. Integrate the filter code in the Engine and run through different permutations or hook up your filtering through the external input and control your filter combos from your indicator.
You are tweaking the parameters of your entry, filter or stop strat. You integrate it in the Engine and evaluate its performance using the Engine’s statistics.
You always wondered what results a random entry strat would yield on your markets. You use the Engine’s built-in random entry strat and test it using different combinations of filters, stop and exit strats.
You want to evaluate the impact of fees and slippage on your strategy. You use the Engine’s inputs to play with different values and get immediate feedback in the detailed numbers provided in the Data Window.
You just want to inspect the individual trades your strategy generates. You include it in the Engine and then inspect trades visually on your charts, looking at the numbers in the Data Window as you move your cursor around.
You have never written a production-grade strategy and you want to learn how. Inspect the code in the Engine; you will find essential components typical of what is being used in actual trading systems.
You have run your system for a while and have compiled actual slippage information and your broker/exchange has updated his fees schedule. You enter the information in the Engine and run it on your markets to see the impact this has on your results.
FEATURES
Before going into the detail of the Inputs and the Data Window numbers, here’s a more detailed overview of the Engine’s features.
Built-in strats
The engine comes with more than 40 pre-coded strategies for the following standard system components:
Entries,
Filters,
Entry stops,
2 stage in-trade stops with kick-in rules,
Pyramiding rules,
Hard exits.
While some of the filter and stop strats provided may be useful in production-quality systems, you will not devise crazy profit-generating systems using only the entry strats supplied; that part is still up to you, as will be finding the elusive combination of components that makes winning systems. The Engine will, however, provide you with a solid foundation where all the trade management nitty-gritty is handled for you. By binding your custom strats to the Engine, you will be able to build reliable systems of the best quality currently allowed on the TV platform.
On-chart trade information
As you move over the bars in a trade, you will see trade numbers in the Data Window change at each bar. The engine calculates the P&L at every bar, including slippage and fees that would be incurred were the trade exited at that bar’s close. If the trade includes pyramided entries, those will be taken into account as well, although for those, final fees and slippage are only calculated at the trade’s exit.
You can also see on-chart markers for the entry level, stop positions, in-trade special events and entries/exits (you will want to disable these when using the Engine in strategy mode to see TV backtesting results).
Customization
You can couple your own strats to the Engine in two ways:
1. By inserting your own code in the Engine’s different modules. The modular design should enable you to do so with minimal effort by following the instructions in the code.
2. By linking an external indicator to the engine. After making the proper selections in the engine’s Settings and providing values respecting the engine’s protocol, your external indicator can, when the Engine is used in Indicator mode only:
Tell the engine when to enter long or short trades, but let the engine’s in-trade stop and exit strats manage the exits,
Signal both entries and exits,
Provide an entry stop along with your entry signal,
Filter other entry signals generated by any of the engine’s entry strats.
Conversion from strategy to study
TradingView strategies are required to backtest using the TradingView backtesting feature, but if you want to generate alerts with your script, whether for automated trading or just to trigger alerts that you will use in discretionary trading, your code has to run as a study since, for the time being, strategies can’t generate alerts. From hereon we will use indicator as a synonym for study.
Unless you want to maintain two code bases, you will need hybrid code that easily flips between strategy and indicator modes, and your code will need to restrict its use of strategy() calls and their arguments if it’s going to be able to run both as an indicator and a strategy using the same trade logic. That’s one of the benefits of using this Engine. Once you will have entered your own strats in the Engine, it will be a matter of commenting/uncommenting only four lines of code to flip between indicator and strategy modes in a matter of seconds.
Additionally, even when running in Indicator mode, the Engine will still provide you with precious numbers on your individual trades and global results, some of which are not available with normal TradingView backtesting.
Post-Exit Analysis for alternate outcomes (PEA)
While typical backtesting shows results of trade outcomes, PEA focuses on what could have happened after the exit. The intention is to help traders get an idea of the opportunity/risk in the bars following the trade in order to evaluate if their exit strategies are too aggressive or conservative.
After a trade is exited, the Engine’s PEA module continues analyzing outcomes for a user-defined quantity of bars. It identifies the maximum opportunity and risk available in that space, and calculates the drawdown required to reach the highest opportunity level post-exit, while recording the number of bars to that point.
Typically, if you can’t find opportunity greater than 1X past your trade using a few different reasonable lengths of PEA, your strategy is doing pretty good at capturing opportunity. Remember that 100% of opportunity is never capturable. If, however, PEA was finding post-trade maximum opportunity of 3 or 4X with average drawdowns of 0.3 to those areas, this could be a clue revealing your system is exiting trades prematurely. To analyze PEA numbers, you can uncomment complete sets of plots in the Plot module to reveal detailed global and individual PEA numbers.
Statistics
The Engine provides stats on your trades that TV backtesting does not provide, such as:
Average Profitability Per Trade (APPT), aka statistical expectancy, a crucial value.
APPT per bar,
Average stop size,
Traded volume .
It also shows you on a trade-by-trade basis, on-going individual trade results and data.
In-trade events
In-trade events can plot reminders and trigger alerts when they occur. The built-in events are:
Price approaching stop,
Possible tops/bottoms,
Large stop movement (for discretionary trading where stop is moved manually),
Large price movements.
Slippage and Fees
Even when running in indicator mode, the Engine allows for slippage and fees to be included in the logic and test results.
Alerts
The alert creation mechanism allows you to configure alerts on any combination of the normal or pyramided entries, exits and in-trade events.
Backtesting results
A few words on the numbers calculated in the Engine. Priority is given to numbers not shown in TV backtesting, as you can readily convert the script to a strategy if you need them.
We have chosen to focus on numbers expressing results relative to X (the trade’s risk) rather than in absolute currency numbers or in other more conventional but less useful ways. For example, most of the individual trade results are not shown in percentages, as this unit of measure is often less meaningful than those expressed in units of risk (X). A trade that closes with a +25% result, for example, is a poor outcome if it was entered with a -50% stop. Expressed in X, this trade’s P&L becomes 0.5, which provides much better insight into the trade’s outcome. A trade that closes with a P&L of +2X has earned twice the risk incurred upon entry, which would represent a pre-trade risk:reward ratio of 2.
The way to go about it when you think in X’s and that you adopt the sound risk management policy to risk a fixed percentage of your account on each trade is to equate a currency value to a unit of X. E.g. your account is 10K USD and you decide you will risk a maximum of 1% of it on each trade. That means your unit of X for each trade is worth 100 USD. If your APPT is 2X, this means every time you risk 100 USD in a trade, you can expect to make, on average, 200 USD.
By presenting results this way, we hope that the Engine’s statistics will appeal to those cognisant of sound risk management strategies, while gently leading traders who aren’t, towards them.
We trade to turn in tangible profits of course, so at some point currency must come into play. Accordingly, some values such as equity, P&L, slippage and fees are expressed in currency.
Many of the usual numbers shown in TV backtests are nonetheless available, but they have been commented out in the Engine’s Plot module.
Position sizing and risk management
All good system designers understand that optimal risk management is at the very heart of all winning strategies. The risk in a trade is defined by the fraction of current equity represented by the amplitude of the stop, so in order to manage risk optimally on each trade, position size should adjust to the stop’s amplitude. Systems that enter trades with a fixed stop amplitude can get away with calculating position size as a fixed percentage of current equity. In the context of a test run where equity varies, what represents a fixed amount of risk translates into different currency values.
Dynamically adjusting position size throughout a system’s life is optimal in many ways. First, as position sizing will vary with current equity, it reproduces a behavioral pattern common to experienced traders, who will dial down risk when confronted to poor performance and increase it when performance improves. Second, limiting risk confers more predictability to statistical test results. Third, position sizing isn’t just about managing risk, it’s also about maximizing opportunity. By using the maximum leverage (no reference to trading on margin here) into the trade that your risk management strategy allows, a dynamic position size allows you to capture maximal opportunity.
To calculate position sizes using the fixed risk method, we use the following formula: Position = Account * MaxRisk% / Stop% [, which calculates a position size taking into account the trade’s entry stop so that if the trade is stopped out, 100 USD will be lost. For someone who manages risk this way, common instructions to invest a certain percentage of your account in a position are simply worthless, as they do not take into account the risk incurred in the trade.
The Engine lets you select either the fixed risk or fixed percentage of equity position sizing methods. The closest thing to dynamic position sizing that can currently be done with alerts is to use a bot that allows syntax to specify position size as a percentage of equity which, while being dynamic in the sense that it will adapt to current equity when the trade is entered, does not allow us to modulate position size using the stop’s amplitude. Changes to alerts are on the way which should solve this problem.
In order for you to simulate performance with the constraint of fixed position sizing, the Engine also offers a third, less preferable option, where position size is defined as a fixed percentage of initial capital so that it is constant throughout the test and will thus represent a varying proportion of current equity.
Let’s recap. The three position sizing methods the Engine offers are:
1. By specifying the maximum percentage of risk to incur on your remaining equity, so the Engine will dynamically adjust position size for each trade so that, combining the stop’s amplitude with position size will yield a fixed percentage of risk incurred on current equity,
2. By specifying a fixed percentage of remaining equity. Note that unless your system has a fixed stop at entry, this method will not provide maximal risk control, as risk will vary with the amplitude of the stop for every trade. This method, as the first, does however have the advantage of automatically adjusting position size to equity. It is the Engine’s default method because it has an equivalent in TV backtesting, so when flipping between indicator and strategy mode, test results will more or less correspond.
3. By specifying a fixed percentage of the Initial Capital. While this is the least preferable method, it nonetheless reflects the reality confronted by most system designers on TradingView today. In this case, risk varies both because the fixed position size in initial capital currency represents a varying percentage of remaining equity, and because the trade’s stop amplitude may vary, adding another variability vector to risk.
Note that the Engine cannot display equity results for strategies entering trades for a fixed amount of shares/contracts at a variable price.
SETTINGS/INPUTS
Because the initial text first published with a script cannot be edited later and because there are just too many options, the Engine’s Inputs will not be covered in minute detail, as they will most certainly evolve. We will go over them with broad strokes; you should be able to figure the rest out. If you have questions, just ask them here or in the PineCoders Telegram group.
Display
The display header’s checkbox does nothing.
For the moment, only one exit strategy uses a take profit level, so only that one will show information when checking “Show Take Profit Level”.
Entries
You can activate two simultaneous entry strats, each selected from the same set of strats contained in the Engine. If you select two and they fire simultaneously, the main strat’s signal will be used.
The random strat in each list uses a different seed, so you will get different results from each.
The “Filter transitions” and “Filter states” strats delegate signal generation to the selected filter(s). “Filter transitions” signals will only fire when the filter transitions into bull/bear state, so after a trade is stopped out, the next entry may take some time to trigger if the filter’s state does not change quickly. When you choose “Filter states”, then a new trade will be entered immediately after an exit in the direction the filter allows.
If you select “External Indicator”, your indicator will need to generate a +2/-2 (or a positive/negative stop value) to enter a long/short position, providing the selected filters allow for it. If you wish to use the Engine’s capacity to also derive the entry stop level from your indicator’s signal, then you must explicitly choose this option in the Entry Stops section.
Filters
You can activate as many filters as you wish; they are additive. The “Maximum stop allowed on entry” is an important component of proper risk management. If your system has an average 3% stop size and you need to trade using fixed position sizes because of alert/execution bot limitations, you must use this filter because if your system was to enter a trade with a 15% stop, that trade would incur 5 times the normal risk, and its result would account for an abnormally high proportion in your system’s performance.
Remember that any filter can also be used as an entry signal, either when it changes states, or whenever no trade is active and the filter is in a bull or bear mode.
Entry Stops
An entry stop must be selected in the Engine, as it requires a stop level before the in-trade stop is calculated. Until the selected in-trade stop strat generates a stop that comes closer to price than the entry stop (or respects another one of the in-trade stops kick in strats), the entry stop level is used.
It is here that you must select “External Indicator” if your indicator supplies a +price/-price value to be used as the entry stop. A +price is expected for a long entry and a -price value will enter a short with a stop at price. Note that the price is the absolute price, not an offset to the current price level.
In-Trade Stops
The Engine comes with many built-in in-trade stop strats. Note that some of them share the “Length” and “Multiple” field, so when you swap between them, be sure that the length and multiple in use correspond to what you want for that stop strat. Suggested defaults appear with the name of each strat in the dropdown.
In addition to the strat you wish to use, you must also determine when it kicks in to replace the initial entry’s stop, which is determined using different strats. For strats where you can define a positive or negative multiple of X, percentage or fixed value for a kick-in strat, a positive value is above the trade’s entry fill and a negative one below. A value of zero represents breakeven.
Pyramiding
What you specify in this section are the rules that allow pyramiding to happen. By themselves, these rules will not generate pyramiding entries. For those to happen, entry signals must be issued by one of the active entry strats, and conform to the pyramiding rules which act as a filter for them. The “Filter must allow entry” selection must be chosen if you want the usual system’s filters to act as additional filtering criteria for your pyramided entries.
Hard Exits
You can choose from a variety of hard exit strats. Hard exits are exit strategies which signal trade exits on specific events, as opposed to price breaching a stop level in In-Trade Stops strategies. They are self-explanatory. The last one labelled When Take Profit Level (multiple of X) is reached is the only one that uses a level, but contrary to stops, it is above price and while it is relative because it is expressed as a multiple of X, it does not move during the trade. This is the level called Take Profit that is show when the “Show Take Profit Level” checkbox is checked in the Display section.
While stops focus on managing risk, hard exit strategies try to put the emphasis on capturing opportunity.
Slippage
You can define it as a percentage or a fixed value, with different settings for entries and exits. The entry and exit markers on the chart show the impact of slippage on the entry price (the fill).
Fees
Fees, whether expressed as a percentage of position size in and out of the trade or as a fixed value per in and out, are in the same units of currency as the capital defined in the Position Sizing section. Fees being deducted from your Capital, they do not have an impact on the chart marker positions.
In-Trade Events
These events will only trigger during trades. They can be helpful to act as reminders for traders using the Engine as assistance to discretionary trading.
Post-Exit Analysis
It is normally on. Some of its results will show in the Global Numbers section of the Data Window. Only a few of the statistics generated are shown; many more are available, but commented out in the Plot module.
Date Range Filtering
Note that you don’t have to change the dates to enable/diable filtering. When you are done with a specific date range, just uncheck “Date Range Filtering” to disable date filtering.
Alert Triggers
Each selection corresponds to one condition. Conditions can be combined into a single alert as you please. Just be sure you have selected the ones you want to trigger the alert before you create the alert. For example, if you trade in both directions and you want a single alert to trigger on both types of exits, you must select both “Long Exit” and “Short Exit” before creating your alert.
Once the alert is triggered, these settings no longer have relevance as they have been saved with the alert.
When viewing charts where an alert has just triggered, if your alert triggers on more than one condition, you will need the appropriate markers active on your chart to figure out which condition triggered the alert, since plotting of markers is independent of alert management.
Position sizing
You have 3 options to determine position size:
1. Proportional to Stop -> Variable, with a cap on size.
2. Percentage of equity -> Variable.
3. Percentage of Initial Capital -> Fixed.
External Indicator
This is where you connect your indicator’s plot that will generate the signals the Engine will act upon. Remember this only works in Indicator mode.
DATA WINDOW INFORMATION
The top part of the window contains global numbers while the individual trade information appears in the bottom part. The different types of units used to express values are:
curr: denotes the currency used in the Position Sizing section of Inputs for the Initial Capital value.
quote: denotes quote currency, i.e. the value the instrument is expressed in, or the right side of the market pair (USD in EURUSD ).
X: the stop’s amplitude, itself expressed in quote currency, which we use to express a trade’s P&L, so that a trade with P&L=2X has made twice the stop’s amplitude in profit. This is sometimes referred to as R, since it represents one unit of risk. It is also the unit of measure used in the APPT, which denotes expected reward per unit of risk.
X%: is also the stop’s amplitude, but expressed as a percentage of the Entry Fill.
The numbers appearing in the Data Window are all prefixed:
“ALL:” the number is the average for all first entries and pyramided entries.
”1ST:” the number is for first entries only.
”PYR:” the number is for pyramided entries only.
”PEA:” the number is for Post-Exit Analyses
Global Numbers
Numbers in this section represent the results of all trades up to the cursor on the chart.
Average Profitability Per Trade (X): This value is the most important gauge of your strat’s worthiness. It represents the returns that can be expected from your strat for each unit of risk incurred. E.g.: your APPT is 2.0, thus for every unit of currency you invest in a trade, you can on average expect to obtain 2 after the trade. APPT is also referred to as “statistical expectancy”. If it is negative, your strategy is losing, even if your win rate is very good (it means your winning trades aren’t winning enough, or your losing trades lose too much, or both). Its counterpart in currency is also shown, as is the APPT/bar, which can be a useful gauge in deciding between rivalling systems.
Profit Factor: Gross of winning trades/Gross of losing trades. Strategy is profitable when >1. Not as useful as the APPT because it doesn’t take into account the win rate and the average win/loss per trade. It is calculated from the total winning/losing results of this particular backtest and has less predictive value than the APPT. A good profit factor together with a poor APPT means you just found a chart where your system outperformed. Relying too much on the profit factor is a bit like a poker player who would think going all in with two’s against aces is optimal because he just won a hand that way.
Win Rate: Percentage of winning trades out of all trades. Taken alone, it doesn’t have much to do with strategy profitability. You can have a win rate of 99% but if that one trade in 100 ruins you because of poor risk management, 99% doesn’t look so good anymore. This number speaks more of the system’s profile than its worthiness. Still, it can be useful to gauge if the system fits your personality. It can also be useful to traders intending to sell their systems, as low win rate systems are more difficult to sell and require more handholding of worried customers.
Equity (curr): This the sum of initial capital and the P&L of your system’s trades, including fees and slippage.
Return on Capital is the equivalent of TV’s Net Profit figure, i.e. the variation on your initial capital.
Maximum drawdown is the maximal drawdown from the highest equity point until the drop . There is also a close to close (meaning it doesn’t take into account in-trade variations) maximum drawdown value commented out in the code.
The next values are self-explanatory, until:
PYR: Avg Profitability Per Entry (X): this is the APPT for all pyramided entries.
PEA: Avg Max Opp . Available (X): the average maximal opportunity found in the Post-Exit Analyses.
PEA: Avg Drawdown to Max Opp . (X): this represents the maximum drawdown (incurred from the close at the beginning of the PEA analysis) required to reach the maximal opportunity point.
Trade Information
Numbers in this section concern only the current trade under the cursor. Most of them are self-explanatory. Use the description’s prefix to determine what the values applies to.
PYR: Avg Profitability Per Entry (X): While this value includes the impact of all current pyramided entries (and only those) and updates when you move your cursor around, P&L only reflects fees at the trade’s last bar.
PEA: Max Opp . Available (X): It’s the most profitable close reached post-trade, measured from the trade’s Exit Fill, expressed in the X value of the trade the PEA follows.
PEA: Drawdown to Max Opp . (X): This is the maximum drawdown from the trade’s Exit Fill that needs to be sustained in order to reach the maximum opportunity point, also expressed in X. Note that PEA numbers do not include slippage and fees.
EXTERNAL SIGNAL PROTOCOL
Only one external indicator can be connected to a script; in order to leverage its use to the fullest, the engine provides options to use it as either an entry signal, an entry/exit signal or a filter. When used as an entry signal, you can also use the signal to provide the entry’s stop. Here’s how this works:
For filter state: supply +1 for bull (long entries allowed), -1 for bear (short entries allowed).
For entry signals: supply +2 for long, -2 for short.
For exit signals: supply +3 for exit from long, -3 for exit from short.
To send an entry stop level with an entry signal: Send positive stop level for long entry (e.g. 103.33 to enter a long with a stop at 103.33), negative stop level for short entry (e.g. -103.33 to enter a short with a stop at 103.33). If you use this feature, your indicator will have to check for exact stop levels of 1.0, 2.0 or 3.0 and their negative counterparts, and fudge them with a tick in order to avoid confusion with other signals in the protocol.
Remember that mere generation of the values by your indicator will have no effect until you explicitly allow their use in the appropriate sections of the Engine’s Settings/Inputs.
An example of a script issuing a signal for the Engine is published by PineCoders.
RECOMMENDATIONS TO ASPIRING SYSTEM DESIGNERS
Stick to higher timeframes. On progressively lower timeframes, margins decrease and fees and slippage take a proportionally larger portion of profits, to the point where they can very easily turn a profitable strategy into a losing one. Additionally, your margin for error shrinks as the equilibrium of your system’s profitability becomes more fragile with the tight numbers involved in the shorter time frames. Avoid <1H time frames.
Know and calculate fees and slippage. To avoid market shock, backtest using conservative fees and slippage parameters. Systems rarely show unexpectedly good returns when they are confronted to the markets, so put all chances on your side by being outrageously conservative—or a the very least, realistic. Test results that do not include fees and slippage are worthless. Slippage is there for a reason, and that’s because our interventions in the market change the market. It is easier to find alpha in illiquid markets such as cryptos because not many large players participate in them. If your backtesting results are based on moving large positions and you don’t also add the inevitable slippage that will occur when you enter/exit thin markets, your backtesting will produce unrealistic results. Even if you do include large slippage in your settings, the Engine can only do so much as it will not let slippage push fills past the high or low of the entry bar, but the gap may be much larger in illiquid markets.
Never test and optimize your system on the same dataset , as that is the perfect recipe for overfitting or data dredging, which is trying to find one precise set of rules/parameters that works only on one dataset. These setups are the most fragile and often get destroyed when they meet the real world.
Try to find datasets yielding more than 100 trades. Less than that and results are not as reliable.
Consider all backtesting results with suspicion. If you never entertained sceptic tendencies, now is the time to begin. If your backtest results look really good, assume they are flawed, either because of your methodology, the data you’re using or the software doing the testing. Always assume the worse and learn proper backtesting techniques such as monte carlo simulations and walk forward analysis to avoid the traps and biases that unchecked greed will set for you. If you are not familiar with concepts such as survivor bias, lookahead bias and confirmation bias, learn about them.
Stick to simple bars or candles when designing systems. Other types of bars often do not yield reliable results, whether by design (Heikin Ashi) or because of the way they are implemented on TV (Renko bars).
Know that you don’t know and use that knowledge to learn more about systems and how to properly test them, about your biases, and about yourself.
Manage risk first , then capture opportunity.
Respect the inherent uncertainty of the future. Cleanse yourself of the sad arrogance and unchecked greed common to newcomers to trading. Strive for rationality. Respect the fact that while backtest results may look promising, there is no guarantee they will repeat in the future (there is actually a high probability they won’t!), because the future is fundamentally unknowable. If you develop a system that looks promising, don’t oversell it to others whose greed may lead them to entertain unreasonable expectations.
Have a plan. Understand what king of trading system you are trying to build. Have a clear picture or where entries, exits and other important levels will be in the sort of trade you are trying to create with your system. This stated direction will help you discard more efficiently many of the inevitably useless ideas that will pop up during system design.
Be wary of complexity. Experienced systems engineers understand how rapidly complexity builds when you assemble components together—however simple each one may be. The more complex your system, the more difficult it will be to manage.
Play! . Allow yourself time to play around when you design your systems. While much comes about from working with a purpose, great ideas sometimes come out of just trying things with no set goal, when you are stuck and don’t know how to move ahead. Have fun!
@LucF
NOTES
While the engine’s code can supply multiple consecutive entries of longs or shorts in order to scale positions (pyramid), all exits currently assume the execution bot will exit the totality of the position. No partial exits are currently possible with the Engine.
Because the Engine is literally crippled by the limitations on the number of plots a script can output on TV; it can only show a fraction of all the information it calculates in the Data Window. You will find in the Plot Module vast amounts of commented out lines that you can activate if you also disable an equivalent number of other plots. This may be useful to explore certain characteristics of your system in more detail.
When backtesting using the TV backtesting feature, you will need to provide the strategy parameters you wish to use through either Settings/Properties or by changing the default values in the code’s header. These values are defined in variables and used not only in the strategy() statement, but also as defaults in the Engine’s relevant Inputs.
If you want to test using pyramiding, then both the strategy’s Setting/Properties and the Engine’s Settings/Inputs need to allow pyramiding.
If you find any bugs in the Engine, please let us know.
THANKS
To @glaz for allowing the use of his unpublished MA Squize in the filters.
To @everget for his Chandelier stop code, which is also used as a filter in the Engine.
To @RicardoSantos for his pseudo-random generator, and because it’s from him that I first read in the Pine chat about the idea of using an external indicator as input into another. In the PineCoders group, @theheirophant then mentioned the idea of using it as a buy/sell signal and @simpelyfe showed a piece of code implementing the idea. That’s the tortuous story behind the use of the external indicator in the Engine.
To @admin for the Volatility stop’s original code and for the donchian function lifted from Ichimoku .
To @BobHoward21 for the v3 version of Volatility Stop .
To @scarf and @midtownsk8rguy for the color tuning.
To many other scripters who provided encouragement and suggestions for improvement during the long process of writing and testing this piece of code.
To J. Welles Wilder Jr. for ATR, used extensively throughout the Engine.
To TradingView for graciously making an account available to PineCoders.
And finally, to all fellow PineCoders for the constant intellectual stimulation; it is a privilege to share ideas with you all. The Engine is for all TradingView PineCoders, of course—but especially for you.
Look first. Then leap.
Heikin Ashi 1h Reversal Strategy [Mr_Orange]This my first published script, so if there are tips or questions, please let me know.
The goal of the script is to recognise a reversal pattern from bearish to bullish sentiment on a 1 hour chart. I want my trade entries to be "mechanically chosen" and not emotionally.
I have seen Heikin Ashi chart reversal scripts, as well as scripts to identify patterns on Stoch RSI , what I was looking for was a Heikin Ashi Reversal Candlestick Pattern which uses the Stochastic RSI as a confirmation for a reversal from bearish to bullish sentiment. I've yet to find one of those, so I decided to study pine scripts and make one myself that works the way I want, and because I've written it myself, I understand how it works. It is purely designed for the 1h chart and Heikin Ashi candles, please do not use it with regular candles. Other timeframes I have not studied, but in my experience, the smaller the timeframes, the trickier it gets, the higer, the more reliable.
At the moment I only included a Buy alert. I have not yet decided on a Sell signal/alert.
Thanks for checking it out!
If you think it is worth something:
- BTC: 1NrG3Sy2VW8u4wWHucj1CQjKQ6hXYwbSyX
Order Size (Units) and Entry/Stop PricesThis is a risk management script derived from the Turtle trading system. I will define what is needed for each input and will also include a brief description about the intended implementation of the risk management strategy. The risk strategy can be used with any trading strategy. This script displays the order size as a unit. 1 unit is the intended size of an entry, first or adds. If trading contracts, Unit Value is presented in terms of number of contracts. If NOT, Unit Value is presented in terms of total cost for a unit in the currency of the market being traded.
::Inputs::
"Available Capital:" - This number should be the TOTAL amount of capital for use in trading account. DO NOT adjust for leverage. The default available capital is set at 15000.
"Account Currency:" - This should be the currency type for the amount entered into "Available Capital:".
"Does Account Currency Need To Be Converted?" - The currency type of "Available Capital:" must match the currency type of the market being traded. If the value of capital is not known for the market currency type, this option will perform the necessary calculation.
"Exchange used to derive BTC value" - This option is used to determine the exchange rate for currency conversions.
"Market Being Traded:" - This option reflects the trading pair of the asset being traded.
"Trading with leverage?" - This option will allow a user-specified constant value (i.e. leverage factor) to be used for calculating the account balance and number of units (i.e. order size). This is option is set to "No Leverage" by default, which will only allow the specified available capital to be used for balance and unit calculations.
"Amount of Leverage? (1-100)" - This number is the leverage factor being applied to the account per trade (e.g. 2.5, 5, 25, 50, 100). The default leverage factor is 100.
"Trading Contracts?" - This option will allow a user-specified value, for contracts, to be used when calculating unit value per order. This option is intended to be used when trading a derivative product (e.g. a contract.)
"Cost Per Contract" - This number should be equal to the value of the derivative, quoted in dollars. (e.g. Bitmex contracts are valued at $1, so the cost per contract = 1. Deribit offers contracts valued at $10, so the cost per contract =10.)
"Risk Percent" - This number should be the percent of capital you are willing to risk for each trade. (e.g. A $10,000 trading account using 2% risk would risk LOSING $20 on a trade.) Increasing or decreasing the risk amount will adjust stops and adds. This strategy would normally consider the total account equity when calculating the size of every new position. Currently, this indicator only calculates on the amount entered into the "Available Capital:" field. I plan to address this factor before implementing the script into the final complete trading strategy script. The default risk percent is set at 2.
Please remember, this indicator is technically in a testing phase. It makes up only a small piece of what will be a much more involved script.
***I am having some trouble with getting correct calculations when trading "BTC Market". I have yet to determine if the issue is due to the TradingView feeds or if the issue is in the actual code. I have, so far, calculated differences of 15-30% when comparing an asset value between it's trading pairs. I am always open to ideas and suggestions.***
Weis zig zag vol JayyI have had a few requests to publish the script I used here: in May 2015. I have been reluctant because it was a very cumbersome script. However, for those few people who actually want to play with this script here it is. I have cleaned it up to make the script more usable. Read my notes associated with "Weis Wave Jayy" for more details on the use of the Weis wave. There are some additional inputs to show the correct volume range on the screen. I think a short video is the best way to convey the information.
The traditional way of displaying Weis Wave as developed by David Weis is to use price. This is a bit of a tricky concept. I hope my video helps to clarify.
In a nutshell to use: open the script. The default is the traditional method used by Weis. Change the value to a wave size of interest in the "Select Weis Wave size" dialogue box. To use "What percent of avg price to set wave size" first click on "Use percent of avg price to set wave size". To use "What percent of last leg to determine reverse" click on "Use percent of last leg?" and be sure that "Use percent of avg price to set wave size" is unclicked.
To display volume correctly as three digits it is necessary to take a number such as 176,895,570 to value that can be displayed within three digits. The number must also be relative to other numbers in the field. If the highest volume on the page is: 2,654,763,889 and with only three numbers available to display the result. The values shown must be 18 and 265 respectively so that the relative magnitudes are understood. Therefore, all numbers in the field of view must be truncated by the same factor.
To do this make sure that "input multiplication factor to show volume must be non zero, if zero multiplication factors shown " is set at 0. Then click on ok at the bottom of the dialogue box. you should see various numbers across the screen each at a pivot point. Scan and select the highest number visible. I some red zeros are visible you should go back to the dialogue box and choose a smaller wave size.
Go back to the dialogue box and replace the 0 in the "input multiplication factor to show volume must be non zero, if zero multiplication factors shown " box with the value you have chosen, Click ok. You should now see the wave with volume. Represented as 1, 2 or 3 numbers read vertically.
Lastly, you can toggle between what I call a lagged wave or a no lag version using "Show weis wave (lagged pivots) unclick to show the no lag version?". What does this mean? The no lag version has a wave that turns at the actual top or bottom. However, price lags the turning point. Price is printed above or below the point at which a new wave is confirmed. What I mean by this is as follows. Suppose that closing prices are in a downward wave over several bars. Each new bar is examined relative to the "Weis wave size". Suppose the current bar closes at a new low, within the current down wave, at $30.00. If the Weis wave size is $0.10 then the algorithm will remember the $30.00 close and compare it to the close of the next bar. If the price goes lower to $29.99, for example, that is the new low and price is continuing down. If price climbs back up to a close of $30.11 then because price has moved more than $0.10 (the Weis wave size) then that is a wave reversal with a new wave starting up.
However if instead of rising by 11 cents it rose only 5 cents $30.05. Since price did not rise 10 cents The wave is still in a downward trend and the trend is not reversed. It is a bit in limbo. As long a closing price on the ensuing bars does not close at or below $30.00 or at or above $30.10 the wave remains in limbo. Suppose price closes for 5 bars between $30.00 and $30.10 and then on the 6th bar closes at or below $30.00. In that case, the downward trend is confirmed and the wave continues. The bars that closed in limbo are part of the downward trend. On the other hand, if the 6th bar close is 30.11 this means that a trend reversal is confirmed - now the trend is up. The turning point of the wave is 6 bars before at the $30.00 closing bar.
As such, turning points of waves can take some time to be confirmed to reverse in direction. Turning points can be 1, 2, 3 or more bars ahead of wave confirmation. A nice straight line for waves connecting highs and lows as used by Weis is not possible since series are not allowed in the plot statement for offsets. As such price is plotted above or below the point at which the wave was confirmed not the actual turning point. The Weis wave turning points plot at the same place as price. The "no lag" wave plot is not a straight line but does show the actual turning points. The volume is the volume for the actual turning point, not the point at which it is plotted.
The smaller the "Weis wave size" the less the lag will be.
If you have questions message me.
Jayy
DR-SK A B C SK A B C - Target and Stop Loss Indicator for Trading
The "SK A B C" script is an advanced technical analysis tool designed to identify price targets and stop loss levels based on three input points (A, B, C) on the chart. The script calculates four potential targets (E, N, V, NT) based on the movement between the points, allowing for customization to suit different trading strategies. It also supports various stop loss methods, including Fixed Percentage, ATR-Based, and Swing High/Low.
Key Features:
Target Calculation (E, N, V, NT): The script calculates and displays potential targets (E, N, V, NT) based on the price movement between the input points (A, B, C).
Stop Loss Options:
Fixed Stop Loss: Based on a percentage of the price.
ATR-Based Stop Loss: Uses the Average True Range (ATR) for calculating the stop loss level.
Swing High/Low Stop Loss: Based on the most recent swing high or low.
Display Targets with Labels: Displays targets clearly on the chart, with options for price labels and boxes around the targets.
Full Customization: Customize colors, lines, and labels to fit your personal preferences.
Real-Time Alerts: Set up alerts to notify you when the price hits a target or stop loss level.
Summary Results Display: A table that shows the targets along with their prices and percentage distance from the current price.
How to Use the Script:
Set Input Points: Select three points (A, B, C) on the chart. The script will calculate the targets based on these points.
Choose Stop Loss Method: Select your preferred stop loss method (Fixed, ATR-Based, Swing High/Low).
Customize the Display: Customize the chart’s appearance by adjusting colors and other options.
Set Alerts: Enable alerts to be notified when the price reaches the targets or stop loss levels.
Notes:
The script follows basic technical analysis principles and helps traders accurately determine potential price targets using input points.
It provides flexibility through customizable stop loss methods and target options, making it a versatile and user-friendly tool.
Liquidity Sweep Trap Alert (Improved)Detects high-conviction “liquidity sweep” traps (false breakouts) by comparing price against recent swing highs/lows, applying a wick-size filter and a cooldown period so that only meaningful reversal wicks trigger signals.
Shows labels on the chart and provides alert conditions when a trap occurs.
How It Works (Core Concept)
Swing High / Low Sweep
The script looks back a user-defined number of bars (Lookback Period) to identify the most recent swing high and swing low (excluding the current forming bar).
A Bull Trap is identified when price’s high exceeds that swing high intrabar but the candle closes back below it.
A Bear Trap is identified when price’s low dips below that swing low intrabar but the candle closes back above it.
Wick-Size Filter
To avoid tiny “micro-sweeps,” the script measures the length of the reversal wick (the distance beyond the swing high or below the swing low) as a percentage of the bar’s total range.
Only if this wick percentage ≥ Min Wick/Range % does the raw trap condition qualify for further consideration.
Cooldown Mechanism
After a trap fires, the same type of trap (bull or bear) is suppressed for a specified number of bars (Cooldown Bars).
This prevents back-to-back signals in choppy conditions and ensures each trap has breathing room before the next.
Confirmed on Close
Signals only trigger once the bar has closed (barstate.isconfirmed), eliminating “ghost” signals that flash intrabar and then vanish.
Chart Labels & Alerts
When a trap is confirmed, a label (“Trap ↑” for bull, “Trap ↓” for bear) is plotted above/below the bar (toggleable via Show Trap Labels).
Built-in alertcondition calls allow users to create native TradingView alerts tied to these confirmed traps.
Inputs & Usage
Lookback Period (bars)
Defines how many bars back to compute the recent swing high/low.
Shorter values catch more frequent, smaller swings; longer values focus on larger pivots.
Show Trap Labels
Toggle on/off the on-chart label markers.
Cooldown Bars
Number of bars to wait after a trap fires before allowing the same trap type again.
Higher values reduce signal frequency; set lower if you want more frequent triggers.
Min Wick/Range %
Minimum required wick length (beyond the swing level) as a percentage of that bar’s high–low range.
Increase to filter out weak or noise-driven sweeps; decrease if you want to capture smaller reversals.
Recommended Settings & Markets
Timeframes: Works on any timeframe (e.g., 5m, 15m, 1h, daily). Adjust inputs per instrument volatility.
Crypto (e.g., BTC): Typical starting values might be Lookback = 10, Min Wick % = 0.10–0.20, Cooldown = 3–5 bars.
Equities / Indices (e.g., Nifty, Bank Nifty): Use higher Min Wick % (e.g., 0.30–0.50) and adjust volume-based filters externally. Cooldown may be 3–5 bars on daily charts.
Testing: Always backtest or visually review sample signals before live trading. Tune Lookback and Min Wick % to balance hit-rate vs. false positives.
Originality & What Makes It Different
Beyond Simple Breakout Alerts: Instead of alerting on any breakout, this indicator specifically looks for false breakouts (liquidity sweeps) where smart money may trap retail stops.
Wick-Size Threshold: Many scripts flag any high above a swing high; here, the reversal wick must be a configurable percentage of the bar’s range, filtering out minor spikes.
Cooldown Logic: Prevents repeated signals in tight ranges, unlike basic breakout or pivot indicators that may fire repeatedly.
Confirmed on Close: Eliminates intrabar flicker signals, ensuring each alert is based on a completed bar.
Lightweight & Self-Contained: No external dependencies; works standalone on the chart. Users can hook native TradingView alerts to these conditions.
How to Use
Add to Chart: Apply the published script; no need for additional overlays.
Configure Inputs: Open settings and set:
Lookback Period to match swing size you target.
Min Wick/Range % to filter out small reversals.
Cooldown Bars so signals aren’t clustered.
Toggle Show Trap Labels on/off.
Set Alerts: In TradingView Alerts, choose “Bull Trap Detected” or “Bear Trap Detected” as the condition.
Interpret Signals:
Bull Trap: Price tried to break above a recent high but failed—potential short opportunity or exit long.
Bear Trap: Price tried to break below a recent low but failed—potential long opportunity or exit short.
Combine with Risk Management: Always apply your own stop-loss and take-profit rules; use the trap signal as one element of your trade decision.
Chart Examples & Annotations
Clean Example Chart: Display only this indicator on the chart using default inputs or example settings.
Annotation Guidance: If you include manual drawings in screenshots, clearly explain:
“Red label marks the bar where price spiked above the 10-bar swing high, closed below it with wick ≥ 10% of range, and no prior bull trap in last 5 bars → Bull Trap.”
Avoid unrelated scripts or decorative drawings that aren’t described.
Disclaimer
Not Financial Advice: Signals indicate potential reversal setups but do not guarantee outcomes. Trade at your own risk.
Use Proper Risk Management: Always define stop-loss, position size, and consider market context.
Test Before Live: Review historical signals and backtest manually or via strategy tester if possible.
Enhanced TEMA with Decimal PeriodsImagine you have a special type of moving average line called a TEMA (Triple
Moving Average). A TEMA is designed to be even quicker to react to price changes than a regular EMA (Exponential Moving Average), helping traders spot trends faster.
What this script does:
Super-Precise TEMA Length:
Normally, when you set the "length" or "period" for a moving average, you use whole numbers (like 10 days, 20 days).
This script lets you be more precise and use decimal numbers for the TEMA's length (like 26.0 days, or even 26.7 days). This allows for very fine-tuning.
How it gets the "Decimal" EMA part (if you choose to use it):
If you want a TEMA with a length of, say, 26.7:
The script first needs to calculate EMAs with a length of 26.7.
To do this, it cleverly calculates two regular EMAs: one with a length of 26 and another with a length of 27 (the whole numbers just below and above 26.7).
Then, it blends these two EMAs. Since 26.7 is closer to 27, it takes more from the "27-period EMA" and a bit less from the "26-period EMA." This mix gives you an EMA that acts like it has a 26.7 period.
Building the TEMA:
A TEMA isn't just one EMA. It's made by taking an EMA of an EMA, and then an EMA of that. It's like smoothing the line multiple times, but in a special mathematical way to make it faster.
So, this script:
-Calculates the first "decimal EMA" (e.g., for 26.7).
-Calculates another "decimal EMA" of that first EMA line (again, using 26.7).
-Calculates a third "decimal EMA" of the second EMA line (still using 26.7).
Finally, it combines these three EMAs using a special TEMA formula to get the final, quick-reacting TEMA line.
Option to Switch Off Decimals:
There's a setting ("Use Decimal Periods"). If you turn this off, the script will just use regular whole-number EMAs to build the TEMA (it will round down your decimal input, so 26.7 would become 26).
Plotting:
The final "Enhanced TEMA" line is drawn on your price chart.
In Simple Terms:
This script gives you a TEMA (a fast-moving average) that you can set up with very precise decimal lengths (like 26.7 instead of just 26 or 27).
It does this "decimal magic" by smartly blending two regular EMAs. You can also choose to use it like a normal TEMA with whole numbers if you prefer. The goal is to give traders a very responsive trend-following line that can be fine-tuned to a high degree of precision.
Canuck Trading IndicatorOverview
The Canuck Trading Indicator is a versatile, overlay-based technical analysis tool designed to assist traders in identifying potential trading opportunities across various timeframes and market conditions. By combining multiple technical indicators—such as RSI, Bollinger Bands, EMAs, VWAP, MACD, Stochastic RSI, ADX, HMA, and candlestick patterns—the indicator provides clear visual signals for bullish and bearish entries, breakouts, long-term trends, and options strategies like cash-secured puts, straddles/strangles, iron condors, and short squeezes. It also incorporates 20-day and 200-day SMAs to detect Golden/Death Crosses and price positioning relative to these moving averages. A dynamic table displays key metrics, and customizable alerts help traders stay informed of market conditions.
Key Features
Multi-Timeframe Adaptability: Automatically adjusts parameters (e.g., ATR multiplier, ADX period, HMA length) based on the chart's timeframe (minute, hourly, daily, weekly, monthly) for optimal performance.
Comprehensive Signal Generation: Identifies short-term entries, breakouts, long-term bullish trends, and options strategies using a combination of momentum, trend, volatility, and candlestick patterns.
Candlestick Pattern Detection: Recognizes bullish/bearish engulfing, hammer, shooting star, doji, and strong candles for precise entry/exit signals.
Moving Average Analysis: Plots 20-day and 200-day SMAs, detects Golden/Death Crosses, and evaluates price position relative to these averages.
Dynamic Table: Displays real-time metrics, including zone status (bullish, bearish, neutral), RSI, MACD, Stochastic RSI, short/long-term trends, candlestick patterns, ADX, ROC, VWAP slope, and MA positioning.
Customizable Alerts: Over 20 alert conditions for entries, exits, overbought/oversold warnings, and MA crosses, with actionable messages including ticker, price, and suggested strategies.
Visual Clarity: Uses distinct shapes, colors, and sizes to plot signals (e.g., green triangles for bullish entries, red triangles for bearish entries) and overlays key levels like EMA, VWAP, Bollinger Bands, support/resistance, and HMA.
Options Strategy Signals: Suggests opportunities for selling cash-secured puts, straddles/strangles, iron condors, and capitalizing on short squeezes.
How to Use
Add to Chart: Apply the indicator to any TradingView chart by selecting "Canuck Trading Indicator" from the Pine Script library.
Interpret Signals:
Bullish Signals: Green triangles (short-term entry), lime diamonds (breakout), blue circles (long-term entry).
Bearish Signals: Red triangles (short-term entry), maroon diamonds (breakout).
Options Strategies: Purple squares (cash-secured puts), yellow circles (straddles/strangles), orange crosses (iron condors), white arrows (short squeezes).
Exits: X-cross shapes in corresponding colors indicate exit signals.
Monitor: Gray circles suggest holding cash or monitoring for setups.
Review Table: Check the top-right table for real-time metrics, including zone status, RSI, MACD, trends, and MA positioning.
Set Alerts: Configure alerts for specific signals (e.g., "Short-Term Bullish Entry" or "Golden Cross") to receive notifications via TradingView.
Adjust Inputs: Customize input parameters (e.g., RSI period, EMA length, ATR period) to suit your trading style or market conditions.
Input Parameters
The indicator offers a wide range of customizable inputs to fine-tune its behavior:
RSI Period (default: 14): Length for RSI calculation.
RSI Bullish Low/High (default: 35/70): RSI thresholds for bullish signals.
RSI Bearish High (default: 65): RSI threshold for bearish signals.
EMA Period (default: 15): Main EMA length (15 for day trading, 50 for swing).
Short/Long EMA Length (default: 3/20): For momentum oscillator.
T3 Smoothing Length (default: 5): Smooths momentum signals.
Long-Term EMA/RSI Length (default: 20/15): For long-term trend analysis.
Support/Resistance Lookback (default: 5): Periods for support/resistance levels.
MACD Fast/Slow/Signal (default: 12/26/9): MACD parameters.
Bollinger Bands Period/StdDev (default: 15/2): BB settings.
Stochastic RSI Period/Smoothing (default: 14/3/3): Stochastic RSI settings.
Uptrend/Short-Term/Long-Term Lookback (default: 2/2/5): Candles for trend detection.
ATR Period (default: 14): For volatility and price targets.
VWAP Sensitivity (default: 0.1%): Threshold for VWAP-based signals.
Volume Oscillator Period (default: 14): For volume surge detection.
Pattern Detection Threshold (default: 0.3%): Sensitivity for candlestick patterns.
ROC Period (default: 3): Rate of change for momentum.
VWAP Slope Period (default: 5): For VWAP trend analysis.
TradingView Publishing Compliance
Originality: The Canuck Trading Indicator is an original script, combining multiple technical indicators and custom logic to provide unique trading signals. It does not replicate existing public scripts.
No Guaranteed Profits: This indicator is a tool for technical analysis and does not guarantee profits. Trading involves risks, and users should conduct their own research and risk management.
Clear Instructions: The description and usage guide are detailed and accessible, ensuring users understand how to apply the indicator effectively.
No External Dependencies: The script uses only built-in Pine Script functions (e.g., ta.rsi, ta.ema, ta.vwap) and requires no external libraries or data sources.
Performance: The script is optimized for performance, using efficient calculations and adaptive parameters to minimize lag on various timeframes.
Visual Clarity: Signals are plotted with distinct shapes and colors, and the table provides a concise summary of market conditions, enhancing usability.
Limitations and Risks
Market Conditions: The indicator may generate false signals in choppy or low-liquidity markets. Always confirm signals with additional analysis.
Timeframe Sensitivity: Performance varies by timeframe; test settings on your preferred chart (e.g., 5-minute for day trading, daily for swing trading).
Risk Management: Use stop-losses and position sizing to manage risk, as suggested in alert messages (e.g., "Stop -20%").
Options Trading: Options strategies (e.g., straddles, iron condors) carry unique risks; consult a financial advisor before trading.
Feedback and Support
For questions, suggestions, or bug reports, please leave a comment on the TradingView script page or contact the author via TradingView. Your feedback helps improve the indicator for the community.
Disclaimer
The Canuck Trading Indicator is provided for educational and informational purposes only. It is not financial advice. Trading involves significant risks, and past performance is not indicative of future results. Always perform your own due diligence and consult a qualified financial advisor before making trading decisions.
Daily Percent Change LabelDaily Percent Change Label
Overview
This Pine Script displays the percentage change from the previous day's closing price as a text label near the current price level on the chart. It works seamlessly across any timeframe (daily, hourly, minute charts) by referencing the daily chart's previous close, making it perfect for traders tracking daily performance.
The label is displayed with a semi-transparent background (green for positive changes, red for negative changes) and white text, ensuring a clean and readable appearance.
Features
Accurate Daily Percent Change: Calculates the percentage change based on the previous day's closing price, even on intraday timeframes (e.g., 1-hour, 5-minute).
Dynamic Label: Shows the percentage change as a label aligned with the current price, updating in real-time.
Color-Coded Background: Semi-transparent green background for positive changes and red for negative changes.
Customizable: Adjust label position, size, color, and style to fit your preferences.
Minimal Impact: No additional plots or graphs, keeping the chart uncluttered.
How to Use
Add the Script:
Copy and paste the script into the Pine Editor in TradingView.
Click "Add to Chart" to apply it.
Check the Output:
A text label (e.g., "+2.34%" or "-1.56%") appears near the current price with a semi-transparent background.
The label is colored green (positive) or red (negative) and updates in real-time.
Switch Timeframes:
Works on any timeframe. The percentage change is always calculated relative to the previous day's close.
Customization Options
Modify the label.new function to customize the label:
Label Position:
Change style=label.style_label_left to label.style_label_right or label.style_label_down to adjust label placement.
Adjust bar_index with an offset (e.g., bar_index + 1) to move the label horizontally.
Text Color:
Modify textcolor=color.white to another color (e.g., color.rgb(255, 255, 0) for yellow).
Background Color:
Adjust color=percent_change >= 0 ? color.new(color.green, 50) : color.new(color.red, 50) to change transparency (e.g., color.new(color.green, 0) for no transparency).
Text Size:
Change size=size.normal to size.small or size.large for smaller or larger text.
Code Details
Timeframe Handling: Uses request.security with the "D" timeframe to fetch the previous day's closing price, ensuring accuracy on intraday charts.
Performance: Updates only on the last bar (barstate.islast) for optimal performance.
Dynamic Styling: Background color changes based on the direction of the price change.
Notes
The label is positioned near the current price for easy reference. To move it closer to the Y-axis, adjust the bar_index offset.
For different reference points (e.g., weekly close), modify the request.security timeframe (e.g., "W" for weekly).
Ensure the script is copied correctly without extra spaces or characters. Use a plain text editor (e.g., Notepad) for copying.
Feedback
Please share your feedback or customizations in the comments! If you find this script helpful, give it a thumbs-up or let others know how you're using it. Happy trading!
Anchored Darvas Box## ANCHORED DARVAS BOX
---
### OVERVIEW
**Anchored Darvas Box** lets you drop a single timestamp on your chart and build a Darvas-style consolidation zone forward from that exact candle. The indicator freezes the first user-defined number of bars to establish the range, verifies that price respects that range for another user-defined number of bars, then waits for the first decisive breakout. The resulting rectangle captures every tick of the accumulation phase and the exact moment of expansion—no manual drawing, complete timestamp precision.
---
### HISTORICAL BACKGROUND
Nicolas Darvas’s 1950s box theory tracked institutional accumulation by hand-drawing rectangles around tight price ranges. A trade was triggered only when price escaped the rectangle.
The anchored version preserves Darvas’s logic but pins the entire sequence to a user-chosen candle: perfect for analysing a market open, an earnings release, FOMC minute, or any other catalytic bar.
---
### ALGORITHM DETAIL
1. **ANCHOR BAR**
*You provide a timestamp via the settings panel.* The script waits until the chart reaches that bar and records its index as **startBar**.
2. **RANGE DEFINITION — BARS 1-7**
• `rangeHigh` = highest high of bars 1-7 plus optional tolerance.
• `rangeLow` = lowest low of bars 1-7 minus optional tolerance.
3. **RANGE VALIDATION — BARS 8-14**
• Price must stay inside ` `.
• Any violation aborts the test; no box is created.
4. **ARMED STATE**
• If bars 8-14 hold the range, two live guide-lines appear:
– **Green** at `rangeHigh`
– **Red** at `rangeLow`
• The script is now “armed,” waiting indefinitely for the first true breakout.
5. **BREAKOUT & BOX CREATION**
• **Up breakout** =`high > rangeHigh` → rectangle drawn in **green**.
• **Down breakout**=`low < rangeLow` → rectangle drawn in **red**.
• Box extends from **startBar** to the breakout bar and never updates again.
• Optional labels print the dollar and percentage height of the box at its left edge.
6. **OPTIONAL COOLDOWN**
• After the box is painted the script can stay silent for a user-defined number of bars, letting you study the fallout without another range immediately arming on top of it.
---
### INPUT PARAMETERS
• **ANCHOR TIME** – Precise yyyy-mm-dd HH:MM:SS that seeds the sequence.
• **BARS TO DEFINE RANGE** – Default 7; affects both definition and validation windows.
• **OPTIONAL TOLERANCE** – Absolute price buffer to ignore micro-wicks.
• **COOLDOWN BARS AFTER BREAKOUT** – Pause length before the indicator is allowed to re-anchor (set to zero to disable).
• **SHOW BOX DISTANCE LABELS** – Toggle to print Δ\$ and Δ% on every completed box.
---
### USER WORKFLOW
1. Add the indicator, open settings, and set **ANCHOR TIME** to the candle you care about (e.g., “2025-04-23 09:30:00” for NYSE open).
2. Watch live as the script:
– Paints the seven-bar range.
– Draws validation lines.
– Locks in the box on breakout.
3. Use the box boundaries as structural stops, targets, or context for further trades.
---
### PRACTICAL APPLICATIONS
• **OPENING RANGE BREAKOUTS** – Anchor at the first second of the session; capture the initial 7-bar range and trade the first clean break.
• **EVENT STUDIES** – Anchor at a news candle to measure immediate post-event volatility.
• **VOLUME PROFILE FUSION** – Combine the anchored box with VPVR to see if the breakout occurs at a high-volume node or a low-liquidity pocket.
• **RISK DISCIPLINE** – Stop-loss can sit just inside the opposite edge of the anchored range, enforcing objective risk.
---
### ADVANCED CUSTOMISATION IDEAS
• **MULTIPLE ANCHORS** – Clone the indicator and anchor several boxes (e.g., London open, New York open).
• **DYNAMIC WINDOW** – Switch the 7-bar fixed length to a volatility-scaled length (ATR percentile).
• **STRATEGY WRAPPER** – Turn the indicator into a `strategy{}` script and back-test anchored boxes on decades of data.
---
### FINAL THOUGHTS
Anchored Darvas Boxes give you Darvas’s timeless range-break methodology anchored to any candle of interest—perfect for dissecting openings, economic releases, or your own bespoke “important” bars with laboratory precision.
Auto Darvas Boxes## AUTO DARVAS BOXES
---
### OVERVIEW
**Auto Darvas Boxes** is a fully-automated, event-driven implementation of Nicolas Darvas’s 1950s box methodology.
The script tracks consolidation zones in real time, verifies that price truly “respects” those zones for a fixed validation window, then waits for the first decisive range violation to mark a directional breakout.
Every box is plotted end-to-end—from the first candle of the sideways range to the exact candle that ruptures it—giving you an on-chart, visually precise record of accumulation or distribution and the expansion that follows.
---
### HISTORICAL BACKGROUND
* Nicolas Darvas was a professional ballroom dancer who traded U.S. equities by telegram while touring the world.
* Without live news or Level II, he relied exclusively on **price** to infer institutional intent.
* His core insight: true market-moving entities leave footprints in the form of tight ranges; once their buying (or selling) is complete, price erupts out of the “box.”
* Darvas’s original procedure was manual—he kept notebooks, drew rectangles around highs and lows, and entered only when price punched out of the roof of a valid box.
* This indicator distills that logic into a rolling, self-resetting state machine so you never miss a box or breakout on any timeframe.
---
### ALGORITHM DETAIL (FOUR-STATE MACHINE)
**STATE 0 – RANGE DEFINITION**
• Examine the last *N* candles (default 7).
• Record `rangeHigh = highest(high, N) + tolerance`.
• Record `rangeLow = lowest(low, N) – tolerance`.
• Remember the index of the earliest bar in this window (`startBar`).
• Immediately transition to STATE 1.
**STATE 1 – RANGE VALIDATION**
• Observe the next *N* candles (again default 7).
• If **any** candle prints `high > rangeHigh` or `low < rangeLow`, the validation fails and the engine resets to STATE 0 **beginning at the violating candle**—no halfway boxes, no overlap.
• If all *N* candles remain inside the range, the box becomes **armed** and we transition to STATE 2.
**STATE 2 – ARMED (LIVE VISUAL FEEDBACK)**
• Draw a **green horizontal line** at `rangeHigh`.
• Draw a **red horizontal line** at `rangeLow`.
• Lines are extended in real time so the user can see the “live” Darvas ceiling and floor.
• Engine waits indefinitely for a breakout candle:
– **Up-Breakout** if `high > rangeHigh`.
– **Down-Breakout** if `low < rangeLow`.
**STATE 3 – BREAKOUT & COOLDOWN**
• Upon breakout the script:
1. Deletes the live range lines.
2. Draws a **filled rectangle (box)** from `startBar` to the breakout bar.
◦ **Green fill** when price exits above the ceiling.
◦ **Red fill** when price exits below the floor.
3. Optionally prints two labels at the left edge of the box:
◦ Dollar distance = `rangeHigh − rangeLow`.
◦ Percentage distance = `(rangeHigh − rangeLow) / rangeLow × 100 %`.
• After painting, the script waits a **user-defined cooldown** (default = 7 bars) before reverting to STATE 0. The cooldown guarantees separation between consecutive tests and prevents overlapping rectangles.
---
### INPUT PARAMETERS (ALL ADJUSTABLE FROM THE SETTINGS PANEL)
* **BARS TO DEFINE RANGE** – Number of candles used for both the definition and validation windows. Classic Darvas logic uses 7 but feel free to raise it on higher timeframes or volatile instruments.
* **OPTIONAL TOLERANCE** – Absolute price buffer added above the ceiling and below the floor. Use a small tolerance to ignore single-tick spikes or data-feed noise.
* **COOLDOWN BARS AFTER BREAKOUT** – How long the engine pauses before hunting for the next consolidation. Setting this equal to the range length produces non-overlapping, evenly spaced boxes.
* **SHOW BOX DISTANCE LABELS** – Toggle on/off. When on, each completed box displays its vertical size in both dollars and percentage, anchored at the box’s left edge.
---
### REAL-TIME VISUALISATION
* During the **armed** phase you see two extended, colour-coded guide-lines showing the exact high/low that must hold.
* When the breakout finally occurs, those lines vanish and the rectangle instantly appears, coloured to match the breakout direction.
* This immediate visual feedback turns any chart into a live Darvas tape—no manual drawing, no lag.
---
### PRACTICAL USE-CASES & BEST-PRACTICE WORKFLOWS
* **INTRADAY MOMENTUM** – Drop the script on 1- to 15-minute charts to catch tight coils before they explode. The coloured box marks the precise origin of the expansion; stops can sit just inside the opposite side of the box.
* **SWING & POSITION TRADING** – On 4-hour or daily charts, boxes often correspond to accumulation bases or volatility squeezes. Waiting for the box-validated breakout filters many false signals.
* **MEAN-REVERSION OR “FADE” STRATEGIES** – If a breakout immediately fails and price re-enters the box, you may have trapped momentum traders; fading that failure can be lucrative.
* **RISK MANAGEMENT** – Box extremes provide objective, structure-based stop levels rather than arbitrary ATR multiples.
* **BACK-TEST RESEARCH** – Because each box is plotted from first range candle to breakout candle, you can programmatically measure hold time, range height, and post-breakout expectancy for any asset.
---
### CUSTOMISATION IDEAS FOR POWER USERS
* **VOLATILITY-ADAPTIVE WINDOW** – Replace the fixed 7-bar length with a dynamic value tied to ATR percentile so the consolidation window stretches or compresses with volatility.
* **MULTI-TIMEFRAME LOGIC** – Only arm a 5-minute box if the 1-hour trend is aligned.
* **STRATEGY WRAPPER** – Convert the indicator to a full `strategy{}` script, automate entries on breakouts, and benchmark performance across assets.
* **ALERTS** – Create TradingView alerts on both up-breakout and down-breakout conditions; route them to webhook for broker automation.
---
### FINAL THOUGHTS
**Auto Darvas Boxes** packages one of the market’s oldest yet still potent price-action frameworks into a modern, self-resetting indicator. Whether you trade equities, futures, crypto, or forex, the script highlights genuine contraction-expansion sequences—Darvas’s original “boxes”—with zero manual effort, letting you focus solely on execution and risk.
Frozen Bias Zones – Sentiment Lock-insOverview
The Frozen Bias Zones indicator visualizes market sentiment lock-ins using a combination of RSI, MACD, and OBV. It creates "bias zones" that indicate whether the market is in a sustained bullish or bearish phase. These zones are then highlighted on the chart, helping traders spot when the market is locked in a bias. The script also detects breakout events from these zones and marks them with clear labels for easier decision-making.
Features
Multi-Indicator Sentiment Analysis: Combines RSI, MACD, and OBV to detect synchronized bullish or bearish sentiment.
Frozen Bias Zones: Identifies and visually represents zones where the market has remained in a particular sentiment (bullish or bearish) for a defined period.
Breakout Alerts: Displays labels to indicate when the price breaks out of the established bias zone.
Customizable Inputs: Adjust the zone duration, RSI, MACD, and breakout label visibility.
Input Parameters
Bias Duration (biasLength)
The minimum number of candles the market must stay in a specific sentiment to consider it a "Frozen Bias Zone".
Default: 5 candles.
RSI Period (rsiPeriod)
Period for the Relative Strength Index (RSI) calculation.
Default: 14 periods.
MACD Settings
MACD Fast (macdFast): The fast-moving average period for the MACD calculation.
Default: 12.
MACD Slow (macdSlow): The slow-moving average period for the MACD calculation.
Default: 26.
MACD Signal (macdSig): The signal line period for MACD.
Default: 9.
Show Break Label (showBreakLabel)
Toggle to show labels when the price breaks out of the bias zone.
Default: True (shows label).
Bias Zone Colors
Bullish Bias Color (bullColor): The color for bullish zones (light green).
Bearish Bias Color (bearColor): The color for bearish zones (light red).
How It Works
This indicator analyzes three key market metrics to determine whether the market is in a bullish or bearish phase:
RSI (Relative Strength Index)
Measures the speed and change of price movements. RSI > 50 indicates a bullish phase, while RSI < 50 indicates a bearish phase.
MACD (Moving Average Convergence Divergence)
Measures the relationship between two moving averages of the price. A positive MACD histogram indicates bullish momentum, while a negative histogram indicates bearish momentum.
OBV (On-Balance Volume)
Uses volume flow to determine if a trend is likely to continue. A rising OBV indicates bullish accumulation, while a falling OBV indicates bearish distribution.
Bias Zone Detection
The market sentiment is considered bullish if all three indicators (RSI, MACD, and OBV) are bullish, and bearish if all three indicators are bearish.
Bullish Zone: A zone is created when the market sentiment remains bullish for the duration of the specified biasLength.
Bearish Zone: A zone is created when the market sentiment remains bearish for the duration of the specified biasLength.
These bias zones are visually represented on the chart as colored boxes (green for bullish, red for bearish).
Breakout Detection
The script automatically detects when the market exits a bias zone. If the price moves outside the bounds of the established zone (either up or down), the script will display one of the following labels:
Bias Break (Up): Indicates that the price has broken upwards out of the zone (with a green label).
Bias Break (Down): Indicates that the price has broken downwards out of the zone (with a red label).
These labels help traders easily identify potential breakout points.
Example Use Case
Bullish Market Conditions: If the RSI is above 50, the MACD histogram is positive, and OBV is increasing, the script will highlight a green bias zone. Traders can watch for potential bullish breakouts or trend continuation after the zone ends.
Bearish Market Conditions: If the RSI is below 50, the MACD histogram is negative, and OBV is decreasing, the script will highlight a red bias zone. Traders can look for potential bearish breakouts when the zone ends.
Conclusion
The Frozen Bias Zones indicator is a powerful tool for traders looking to visualize prolonged market sentiment, whether bullish or bearish. By combining RSI, MACD, and OBV, it helps traders spot when the market is "locked in" to a bias. The breakout labels make it easier to take action when the price moves outside of the established zone, potentially signaling the start of a new trend.
Instructions
To use this script:
Add the Frozen Bias Zones indicator to your TradingView chart.
Adjust the input parameters to suit your trading strategy.
Observe the colored bias zones on your chart, along with breakout labels, to make informed decisions on trend continuation or reversal.
Combined EMA/Smiley & DEM System## 🔷 General Overview
This script creates an advanced technical analysis system for TradingView, combining multiple Exponential Moving Averages (EMAs), Simple Moving Averages (SMAs), dynamic Fibonacci levels, and ATR (Average True Range) analysis. It presents the results clearly through interactive, real-time tables directly on the chart.
---
## 🔹 Indicator Structure
The script consists of two main parts:
### **1. EMA & SMA Combined System with Fibonacci**
- **Purpose:**
Provides visual insights by comparing multiple EMA/SMA periods and identifying significant dynamic price levels using Fibonacci ratios around a calculated "Golden" line.
- **Components:**
- **Moving Averages (MAs)**:
- 20 EMAs (periods from 20 to 400)
- 20 SMAs (also from 20 to 400)
- **Golden Line:**
Calculated as the average of all EMAs and SMAs.
- **Dynamic Fibonacci Levels:**
Key ratios around the Golden line (0.5, 0.618, 0.786, 1.0, 1.272, 1.414, 1.618, 2.0) dynamically adjust based on market conditions.
- **Fibonacci Labels:**
Labels are shown next to Fibonacci lines, indicating their numeric value clearly on the chart.
- **Table (Top Right Corner):**
- Displays:
- **Input:** EMA/SMA periods sorted by their current average price levels.
- **AVG:** The average of corresponding EMA & SMA pairs.
- **EMA & SMA Values:** Individual EMA/SMA values clearly marked.
- **Dynamic Highlighting:** Highlights the row whose average (EMA+SMA)/2 is closest to the current price, helping identify immediate price action significance.
- **Sorting Logic:**
Each EMA/SMA pair is dynamically sorted based on their average values. Color coding (red/green) is used:
- **Green:** EMA/SMA pairs with shorter periods when their average is lower.
- **Red:** EMA/SMA pairs with longer periods when their average is lower.
- **Star (⭐):** Represents the "Golden" average clearly.
---
### **2. DEM System (Dynamic EMA/ATR Metrics)**
- **Purpose:**
Provides detailed ATR statistics to assess market volatility clearly and quickly.
- **Components:**
- **Moving Averages:**
- SMA lines: 25, 50, 100, 200.
- **Bollinger Bands:**
- Based on 20-period SMA of highs and standard deviation of lows.
- **ATR Analysis:**
- ATR calculations for multiple periods (1-day, 10, 20, 30, 40, 50).
- **ATR Premium:** Average ATR of all calculated periods, providing an overarching volatility indicator.
- **ATR Table (Bottom Right Corner):**
- Displays clearly structured ATR values and percentages relative to the current close price:
- Columns: **ATR Period**, **Value**, and **% of Close**.
- Rows: Each specific ATR (1D, 10, 20, 30, 40, 50), plus ATR premium.
- The ATR premium is highlighted in yellow to signify its importance clearly.
---
## 🔹 Key Features and Logic Explained
- **Dynamic EMA/SMA Sorting:**
The script computes the average of each EMA/SMA pair and sorts them dynamically on each bar, highlighting their relative importance visually. This allows traders to easily interpret the strength of current support/resistance levels based on moving averages.
- **Closest EMA/SMA Pair to Current Price:**
Calculates the absolute difference between the current price and all EMA/SMA averages, highlighting the closest one for quick reference.
- **Fibonacci Ratios:**
- Dynamically calculated Fibonacci levels based on the "Golden" EMA/SMA average give clear visual guidance for potential targets, supports, and resistances.
- Labels are continuously updated and placed next to levels for clarity.
- **ATR Volatility Analysis:**
- Provides immediate insight into market volatility with absolute and relative (percentage-based) ATR values.
- ATR premium summarizes volatility across multiple timeframes clearly.
---
## 🔹 Practical Use Case:
- Traders can quickly identify support/resistance and critical price zones through EMA/SMA and Fibonacci combinations.
- Useful in assessing immediate volatility, guiding stop-loss and take-profit levels through detailed ATR metrics.
- The dynamic highlighting in tables provides intuitive, real-time decision support for active traders.
---
## 🔹 How to Use this Script:
1. **Adjust EMA & SMA Lengths** from indicator settings if different periods are preferred.
2. **Monitor dynamic Fibonacci levels** around the "Golden" average to identify possible reversal or continuation points.
3. **Check EMA/SMA table:** Rows highlighted indicate immediate significance concerning current market price.
4. **ATR table:** Use volatility metrics for better risk management.
---
## 🔷 Conclusion
This advanced Pine Script indicator efficiently combines multiple EMAs, SMAs, dynamic Fibonacci retracement levels, and volatility analysis using ATR into a comprehensive real-time analytical tool, enhancing traders' decision-making capabilities by providing clear and actionable insights directly on the TradingView chart.
Correlation Heatmap█ OVERVIEW
This indicator creates a correlation matrix for a user-specified list of symbols based on their time-aligned weekly or monthly price returns. It calculates the Pearson correlation coefficient for each possible symbol pair, and it displays the results in a symmetric table with heatmap-colored cells. This format provides an intuitive view of the linear relationships between various symbols' price movements over a specific time range.
█ CONCEPTS
Correlation
Correlation typically refers to an observable statistical relationship between two datasets. In a financial time series context, it usually represents the extent to which sampled values from a pair of datasets, such as two series of price returns, vary jointly over time. More specifically, in this context, correlation describes the strength and direction of the relationship between the samples from both series.
If two separate time series tend to rise and fall together proportionally, they might be highly correlated. Likewise, if the series often vary in opposite directions, they might have a strong anticorrelation . If the two series do not exhibit a clear relationship, they might be uncorrelated .
Traders frequently analyze asset correlations to help optimize portfolios, assess market behaviors, identify potential risks, and support trading decisions. For instance, correlation often plays a key role in diversification . When two instruments exhibit a strong correlation in their returns, it might indicate that buying or selling both carries elevated unsystematic risk . Therefore, traders often aim to create balanced portfolios of relatively uncorrelated or anticorrelated assets to help promote investment diversity and potentially offset some of the risks.
When using correlation analysis to support investment decisions, it is crucial to understand the following caveats:
• Correlation does not imply causation . Two assets might vary jointly over an analyzed range, resulting in high correlation or anticorrelation in their returns, but that does not indicate that either instrument directly influences the other. Joint variability between assets might occur because of shared sensitivities to external factors, such as interest rates or global sentiment, or it might be entirely coincidental. In other words, correlation does not provide sufficient information to identify cause-and-effect relationships.
• Correlation does not predict the future relationship between two assets. It only reflects the estimated strength and direction of the relationship between the current analyzed samples. Financial time series are ever-changing. A strong trend between two assets can weaken or reverse in the future.
Correlation coefficient
A correlation coefficient is a numeric measure of correlation. Several coefficients exist, each quantifying different types of relationships between two datasets. The most common and widely known measure is the Pearson product-moment correlation coefficient , also known as the Pearson correlation coefficient or Pearson's r . Usually, when the term "correlation coefficient" is used without context, it refers to this correlation measure.
The Pearson correlation coefficient quantifies the strength and direction of the linear relationship between two variables. In other words, it indicates how consistently variables' values move together or in opposite directions in a proportional, linear manner. Its formula is as follows:
𝑟(𝑥, 𝑦) = cov(𝑥, 𝑦) / (𝜎𝑥 * 𝜎𝑦)
Where:
• 𝑥 is the first variable, and 𝑦 is the second variable.
• cov(𝑥, 𝑦) is the covariance between 𝑥 and 𝑦.
• 𝜎𝑥 is the standard deviation of 𝑥.
• 𝜎𝑦 is the standard deviation of 𝑦.
In essence, the correlation coefficient measures the covariance between two variables, normalized by the product of their standard deviations. The coefficient's value ranges from -1 to 1, allowing a more straightforward interpretation of the relationship between two datasets than what covariance alone provides:
• A value of 1 indicates a perfect positive correlation over the analyzed sample. As one variable's value changes, the other variable's value changes proportionally in the same direction .
• A value of -1 indicates a perfect negative correlation (anticorrelation). As one variable's value increases, the other variable's value decreases proportionally.
• A value of 0 indicates no linear relationship between the variables over the analyzed sample.
Aligning returns across instruments
In a financial time series, each data point (i.e., bar) in a sample represents information collected in periodic intervals. For instance, on a "1D" chart, bars form at specific times as successive days elapse.
However, the times of the data points for a symbol's standard dataset depend on its active sessions , and sessions vary across instrument types. For example, the daily session for NYSE stocks is 09:30 - 16:00 UTC-4/-5 on weekdays, Forex instruments have 24-hour sessions that span from 17:00 UTC-4/-5 on one weekday to 17:00 on the next, and new daily sessions for cryptocurrencies start at 00:00 UTC every day because crypto markets are consistently open.
Therefore, comparing the standard datasets for different asset types to identify correlations presents a challenge. If two symbols' datasets have bars that form at unaligned times, their correlation coefficient does not accurately describe their relationship. When calculating correlations between the returns for two assets, both datasets must maintain consistent time alignment in their values and cover identical ranges for meaningful results.
To address the issue of time alignment across instruments, this indicator requests confirmed weekly or monthly data from spread tickers constructed from the chart's ticker and another specified ticker. The datasets for spreads are derived from lower-timeframe data to ensure the values from all symbols come from aligned points in time, allowing a fair comparison between different instrument types. Additionally, each spread ticker ID includes necessary modifiers, such as extended hours and adjustments.
In this indicator, we use the following process to retrieve time-aligned returns for correlation calculations:
1. Request the current and previous prices from a spread representing the sum of the chart symbol and another symbol ( "chartSymbol + anotherSymbol" ).
2. Request the prices from another spread representing the difference between the two symbols ( "chartSymbol - anotherSymbol" ).
3. Calculate half of the difference between the values from both spreads ( 0.5 * (requestedSum - requestedDifference) ). The results represent the symbol's prices at times aligned with the sample points on the current chart.
4. Calculate the arithmetic return of the retrieved prices: (currentPrice - previousPrice) / previousPrice
5. Repeat steps 1-4 for each symbol requiring analysis.
It's crucial to note that because this process retrieves prices for a symbol at times consistent with periodic points on the current chart, the values can represent prices from before or after the closing time of the symbol's usual session.
Additionally, note that the maximum number of weeks or months in the correlation calculations depends on the chart's range and the largest time range common to all the requested symbols. To maximize the amount of data available for the calculations, we recommend setting the chart to use a daily or higher timeframe and specifying a chart symbol that covers a sufficient time range for your needs.
█ FEATURES
This indicator analyzes the correlations between several pairs of user-specified symbols to provide a structured, intuitive view of the relationships in their returns. Below are the indicator's key features:
Requesting a list of securities
The "Symbol list" text box in the indicator's "Settings/Inputs" tab accepts a comma-separated list of symbols or ticker identifiers with optional spaces (e.g., "XOM, MSFT, BITSTAMP:BTCUSD"). The indicator dynamically requests returns for each symbol in the list, then calculates the correlation between each pair of return series for its heatmap display.
Each item in the list must represent a valid symbol or ticker ID. If the list includes an invalid symbol, the script raises a runtime error.
To specify a broker/exchange for a symbol, include its name as a prefix with a colon in the "EXCHANGE:SYMBOL" format. If a symbol in the list does not specify an exchange prefix, the indicator selects the most commonly used exchange when requesting the data.
Note that the number of symbols allowed in the list depends on the user's plan. Users with non-professional plans can compare up to 20 symbols with this indicator, and users with professional plans can compare up to 32 symbols.
Timeframe and data length selection
The "Returns timeframe" input specifies whether the indicator uses weekly or monthly returns in its calculations. By default, its value is "1M", meaning the indicator analyzes monthly returns. Note that this script requires a chart timeframe lower than or equal to "1M". If the chart uses a higher timeframe, it causes a runtime error.
To customize the length of the data used in the correlation calculations, use the "Max periods" input. When enabled, the indicator limits the calculation window to the number of periods specified in the input field. Otherwise, it uses the chart's time range as the limit. The top-left corner of the table shows the number of confirmed weeks or months used in the calculations.
It's important to note that the number of confirmed periods in the correlation calculations is limited to the largest time range common to all the requested datasets, because a meaningful correlation matrix requires analyzing each symbol's returns under the same market conditions. Therefore, the correlation matrix can show different results for the same symbol pair if another listed symbol restricts the aligned data to a shorter time range.
Heatmap display
This indicator displays the correlations for each symbol pair in a heatmap-styled table representing a symmetric correlation matrix. Each row and column corresponds to a specific symbol, and the cells at their intersections correspond to symbol pairs . For example, the cell at the "AAPL" row and "MSFT" column shows the weekly or monthly correlation between those two symbols' returns. Likewise, the cell at the "MSFT" row and "AAPL" column shows the same value.
Note that the main diagonal cells in the display, where the row and column refer to the same symbol, all show a value of 1 because any series of non-na data is always perfectly correlated with itself.
The background of each correlation cell uses a gradient color based on the correlation value. By default, the gradient uses blue hues for positive correlation, orange hues for negative correlation, and white for no correlation. The intensity of each blue or orange hue corresponds to the strength of the measured correlation or anticorrelation. Users can customize the gradient's base colors using the inputs in the "Color gradient" section of the "Settings/Inputs" tab.
█ FOR Pine Script® CODERS
• This script uses the `getArrayFromString()` function from our ValueAtTime library to process the input list of symbols. The function splits the "string" value by its commas, then constructs an array of non-empty strings without leading or trailing whitespaces. Additionally, it uses the str.upper() function to convert each symbol's characters to uppercase.
• The script's `getAlignedReturns()` function requests time-aligned prices with two request.security() calls that use spread tickers based on the chart's symbol and another symbol. Then, it calculates the arithmetic return using the `changePercent()` function from the ta library. The `collectReturns()` function uses `getAlignedReturns()` within a loop and stores the data from each call within a matrix . The script calls the `arrayCorrelation()` function on pairs of rows from the returned matrix to calculate the correlation values.
• For consistency, the `getAlignedReturns()` function includes extended hours and dividend adjustment modifiers in its data requests. Additionally, it includes other settings inherited from the chart's context, such as "settlement-as-close" preferences.
• A Pine script can execute up to 40 or 64 unique `request.*()` function calls, depending on the user's plan. The maximum number of symbols this script compares is half the plan's limit, because `getAlignedReturns()` uses two request.security() calls.
• This script can use the request.security() function within a loop because all scripts in Pine v6 enable dynamic requests by default. Refer to the Dynamic requests section of the Other timeframes and data page to learn more about this feature, and see our v6 migration guide to learn what's new in Pine v6.
• The script's table uses two distinct color.from_gradient() calls in a switch structure to determine the cell colors for positive and negative correlation values. One call calculates the color for values from -1 to 0 based on the first and second input colors, and the other calculates the colors for values from 0 to 1 based on the second and third input colors.
Look first. Then leap.
Change % Inteligente - NQ / ES / YMTopstep Compliance: Daily Price Change % Alert (NQ / ES / YM)
Script Purpose
This script helps funded traders (especially those using Topstep or similar programs) monitor the real-time percentage change of major equity index futures: Nasdaq (NQ), S&P 500 (ES), and Dow Jones (YM).
⚠️ Why it matters
Topstep prohibits trading within 2% of the daily price limits set by the CME. If a trader holds a position too close to those limits, they risk account disqualification.
📊 How it works
• Detects the instrument: NQ1!, ES1!, YM1!, or M2025 contracts
• Calculates the real-time % change from today’s market open
• Simulates daily CME price limits (+7% / -7%)
• Highlights when price enters the last 2% of the limit range (prohibited zone)
• Displays a clean, floating panel with the current % change and a warning if necessary
• Sends a visual and optional audio alert when in the prohibited zone
🧠 What makes this script unique?
This tool is **not for technical analysis**. It focuses exclusively on **funding program compliance** and **account protection**, which is not covered by other public scripts. It’s lightweight, intuitive, and designed for traders who manage risk like professionals.
✅ Open-source and ready for review.
✅ CHART SETUP FOR PUBLICATION
✔️ Use a clean chart
✔️ Only apply this script
✔️ Make sure the panel is visible (top-right or top-center recommended)
❌ No extra indicators or drawings
✔️ Use NQM2025, ESM2025 or YMM2025 on a volatile day (to show -1% to -3% range)
INSTRUCTIONS
1. Add the script to your chart.
2. Use it with NQ1!, ES1!, or YM1! (or M2025 contracts).
3. The panel will show today’s price change %.
4. If the market is within the last 2% of the CME price limit, a warning will appear.
5. Use this to avoid violating Topstep’s trading rules during volatile days.
Moving Average Convergence DivergenceThis script is written in Pine Script (version 6) for TradingView and implements the **Moving Average Convergence Divergence (MACD)** indicator. The MACD is a popular momentum oscillator used to identify trend direction, strength, and potential reversals. This version includes customizable inputs, visual enhancements (like crossover markers), and alerts for key events. Below is a detailed explanation of the script:
---
### **1. Purpose**
- The script calculates and displays the MACD line, signal line, and histogram.
- It highlights key events such as MACD/signal line crossovers and zero-line crosses with shapes and colors.
- It provides alerts for changes in the histogram's direction (rising to falling or vice versa).
---
### **2. User Inputs**
- **Fast Length**: Period for the fast moving average (default: 12).
- **Slow Length**: Period for the slow moving average (default: 26).
- **Source**: Data input for calculation (default: closing price, `close`).
- **Signal Smoothing**: Period for the signal line (default: 9, range: 1–50).
- **Oscillator MA Type**: Type of moving average for MACD calculation (options: SMA or EMA, default: EMA).
- **Signal Line MA Type**: Type of moving average for the signal line (options: SMA or EMA, default: EMA).
---
### **3. MACD Calculation**
The MACD is calculated in three parts:
1. **MACD Line**: Difference between the fast and slow moving averages.
- Fast MA: Either SMA or EMA of the source over `fast_length`.
- Slow MA: Either SMA or EMA of the source over `slow_length`.
- Formula: `macd = fast_ma - slow_ma`.
2. **Signal Line**: A moving average (SMA or EMA) of the MACD line over `signal_length`.
- Formula: `signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)`.
3. **Histogram**: Difference between the MACD line and the signal line.
- Formula: `hist = macd - signal`.
---
### **4. Key Events Detection**
#### **MACD/Signal Line Crossovers**
- **Bullish Cross**: MACD crosses above the signal line (`ta.crossover(macd, signal)`).
- **Bearish Cross**: MACD crosses below the signal line (`ta.crossunder(macd, signal)`).
#### **Zero Line Crosses**
- **Cross Above Zero**: MACD crosses above 0 (`ta.crossover(macd, 0)`).
- **Cross Below Zero**: MACD crosses below 0 (`ta.crossunder(macd, 0)`).
---
### **5. Colors**
- **MACD Line**: Green (#089981) if MACD > signal (bullish), red (#f23645) if MACD < signal (bearish).
- **Signal Line**: White (`color.white`).
- **Histogram**:
- Positive (MACD > signal): Light green (#B2DFDB) if decreasing, darker green (#26A69A) if increasing.
- Negative (MACD < signal): Light red (#FFCDD2) if increasing in magnitude, darker red (#FF5252) if decreasing in magnitude.
- **Zero Line**: Gray with 50% transparency (`color.new(#787B86, 50)`).
---
### **6. Visual Outputs**
#### **Plotted Lines**
- **MACD Line**: Plotted with dynamic coloring based on its position relative to the signal line.
- **Signal Line**: Plotted in white.
- **Histogram**: Displayed as columns, with colors indicating direction and momentum.
- **Zero Line**: Horizontal line at 0 for reference.
#### **Shapes for Key Events**
- **Bullish Cross Below Zero**: Green circle on the MACD line when MACD crosses above the signal line while still below zero.
- **Bearish Cross Above Zero**: Red circle on the MACD line when MACD crosses below the signal line while still above zero.
- **Cross Above Zero**: Green upward label at the zero line when MACD crosses above 0.
- **Cross Below Zero**: Red downward label at the zero line when MACD crosses below 0.
---
### **7. Alerts**
- **Rising to Falling**: Triggers when the histogram switches from positive (or zero) to negative.
- Condition: `hist >= 0 and hist < 0`.
- Message: "MACD histogram switched from rising to falling".
- **Falling to Rising**: Triggers when the histogram switches from negative (or zero) to positive.
- Condition: `hist <= 0 and hist > 0`.
- Message: "MACD histogram switched from falling to rising".
---
### **8. How It Works**
1. **Trend Direction**:
- MACD above signal line (green) suggests bullish momentum.
- MACD below signal line (red) suggests bearish momentum.
2. **Momentum Strength**:
- Histogram height shows the strength of the momentum (larger bars = stronger momentum).
- Histogram color changes indicate whether momentum is increasing or decreasing.
3. **Reversal Signals**:
- Crossovers between MACD and signal lines often signal potential trend changes.
- Zero-line crosses indicate shifts between bullish (above 0) and bearish (below 0) territory.
---
### **9. How to Use**
1. Add the script to TradingView.
2. Adjust inputs (e.g., fast/slow lengths, MA types) to suit your trading style.
3. Monitor the chart:
- Green MACD and upward histogram bars suggest bullish conditions.
- Red MACD and downward histogram bars suggest bearish conditions.
- Watch for circles (crossovers) and labels (zero-line crosses) for trade signals.
4. Set up alerts to notify you of histogram direction changes.
---
### **10. Key Features**
- **Customization**: Flexible MA types and periods.
- **Visual Clarity**: Dynamic colors and shapes highlight key events.
- **Alerts**: Notifies users of momentum shifts via histogram changes.
- **Intuitive**: Combines all MACD components (line, signal, histogram) in one indicator.
This script is ideal for traders who rely on MACD for momentum analysis and want clear visual cues and alerts for decision-making.